/**
 * @author LKQ
 * @date 2021/12/20 17:49
 * @description 快速幂方法，x^64 = x -> x^2 -> x^4 -> x^8 -> x^16 -> x^32 -> x^64, 只需要6次，而循环需要64次。
 * 此处采用递归的方式，需要使用额外的栈空间。
 */
public class Solution {
    public static void main(String[] args) {
        Solution solution = new Solution();
        System.out.println(solution.myPow(2,12));
    }

    public double myPow(double x, int n) {
        long N = n;
        return N >= 0 ? quickMul(x , N) : 1.0 / quickMul(x, -N);
    }

    public double quickMul(double x, long N) {
        if (N==0) {
            return 1.0;
        }
        double y = quickMul(x, N /2 );
        return N % 2 == 0 ? y * y : y * y * x;
    }
}
